const db = require('../db/index')
exports.palyFn = async (req, res) => {
  let productData = req.productData
  let appData = req.productData
  const openId = req.body.productData.openId // openId
  const productId = req.body.productData.productId // 假设这是商品 id，
  const productName = req.body.productData.productName // 假设这是商品名称，
  let productPrice = req.body.productData.productPrice // 假设这是商品价格
  const productNum = req.body.productData.productNum || 1 // 假设这是商品数量
  // 微信小程序配置信息
  const wxConfig = {
    appid: appData.appid,
    secret: appData.AppSecret,
    mchid: merchantNumber, //商户号
    serial_no: 'your_serial_no', //API证书 - 商户API证书序列号 
    publicKey: fs
      .readFileSync(`${__dirname}/certificate/apiclient_cert.pem`)
      .toString(), // 公钥
    privateKey: fs
      .readFileSync(`${__dirname}/certificate/apiclient_key.pem`)
      .toString(), // 秘钥
    apiV3Key: 'your_apiV3Key', //apiV3 秘钥值
    mchKey: 'your_mch_key', // 微信支付商户密钥
  }
  if (!openId || !openId || !productId || !productName || !productPrice) {
    throw new Error('必要参数不能为空')
  }

  if (typeof productPrice === 'string') {
    productPrice = Number(productPrice)
  }
  productPrice = Math.round(productPrice * 100) // 将元转换为分

  const wechatPay = new WxPay({
    appid: wxConfig.appid,
    mchid: wxConfig.mchid,
    publicKey: wxConfig.publicKey, // 公钥
    privateKey: wxConfig.privateKey, // 秘钥
  })

  const params = {
    description: `购买商品：${productName} x${productNum}`, // 商品描述
    out_trade_no: Date.now().toString(), // 商户订单号
    notify_url: 'http://yourdomain.com/api/weChatMp/notify', // 通知地址
    amount: { // 订单金额信息
      total: productPrice, // 订单总金额，单位为分。
    },
    payer: { //【支付者】 支付者信息。
      openid: openId, // 【用户标识】 用户在普通商户AppID下的唯一标识。 下单前需获取到用户的OpenID
    },
    scene_info: { // 【场景信息】 支付场景描述
      payer_client_ip: '14.23.150.211', // 【用户终端IP】 用户的客户端IP，支持IPv4和IPv6两种格式的IP地址。
    },
  }

  // 调用小程序下单接口
  const result = await wechatPay.transactions_jsapi(params)

  res.send(result)
}